6.6. Creación de archivos y enlaces simbólicos esenciales

Algunos programas utilizan rutas de acceso a los programas que aún no existen. Con el fin de satisfacer a estos programas, hay que crear una serie de enlaces simbólicos que serán sustituidos por ficheros reales durante el transcurso de este capítulo después de que el software se ha instalado:

ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
ln -sv bash /bin/sh

Históricamente, Linux mantiene una lista de los sistemas de archivos montados en el archivo /etc/mtab . Los núcleos modernos mantienen esta lista interna y la expone al usuario a través del sistema de archivos /proc. Para satisfacer las utilidades que esperan la presencia de /etc/mtab , cree el siguiente enlace simbólico:

ln -sv /proc/self/mounts /etc/mtab

A fin de que el usuario pueda entrar al sistema y para que el nombre "root" sea reconocido, debe tener las entradas apropiadas en los archivos /etc/passwd y /etc/group files.

Cree el fichero /etc/passwd ejecutando el siguiente comando:

cat > /etc/passwd << "EOF"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/dev/null:/bin/false
nobody:x:99:99:Unprivileged User:/dev/null:/bin/false
EOF

La contraseña real para root (la "x" que se utiliza aquí es sólo un sustituto) se establecerá más adelante.

Cree el fichero /etc/group ejecutando el siguiente comando:

cat > /etc/group << "EOF"
root:x:0:
bin:x:1:
sys:x:2:
kmem:x:3:
tape:x:4:
tty:x:5:
daemon:x:6:
floppy:x:7:
disk:x:8:
lp:x:9:
dialout:x:10:
audio:x:11:
video:x:12:
utmp:x:13:
usb:x:14:
cdrom:x:15:
mail:x:34:
nogroup:x:99:
EOF

Los grupos creados no son parte de ningún estándar, son grupos escogidos en parte por las exigencias de la configuración de Udev en este capítulo, y en parte por la práctica común empleada por una serie de distribuciones Linux existentes. El Linux Standard Base (LSB, disponible en http://www.linuxbase.org) recomienda sólo eso, además del grupo root con un ID de grupo (GID) de 0, un grupo bin con GID 1 debe estar presente. Todos los demás nombres de grupos y sus GID pueden ser elegidos libremente por el usuario, pues los programas correctamente escritos no dependen del número GID, sino que utilizan el nombre del grupo.

Para eliminar el "I have no name!" que viene apareciendo hasta ahora, iniciar un nuevo shell. Teniendo en cuenta que se instaló Glibc completamente en el capítulo 5 y los archivos /etc/passwd y /etc/group se han creado, el nombre de usuario y nombre de grupo aparecerán ahora correctamente:

exec /tools/bin/bash --login +h

Observe el uso de la directiva +h directive. Esto le indica a bash Esto le indica a +h Esto le indica a

Ellogin, agetty, y init (entre otros) utilizan una serie de ficheros de registro con información sobre quienes están y estaban dentro del sistema y cuándo. Sin embargo, estos programas no crean dichos ficheros si no existen ya. Los ficheros de registro y sus permisos correctos:

touch /var/log/{btmp,lastlog,wtmp}
chgrp -v utmp /var/log/lastlog
chmod -v 664  /var/log/lastlog
chmod -v 600  /var/log/btmp

El archivo/var/log/wtmp registra todos los ingresos y salidas. El archivo /var/log/lastlog registra la última conexión de cada usuario. El archivo /var/log/btmp file registra los intentos fallidos de conexión.

[Note]

Nota

El archivo /run/utmp registra los usuarios que están actualmente dentro Este archivo se crea de forma dinámica en los scripts de arranque.

[Note]

Nota añadida por Alejandro

Para asegurar el funcionamiento del compilador en los apartados siguientes (6.7 a 6.63) crearemos un enlace simbólico en /lib de nombre ld-linux.so.2 apuntando al interprete ubicado en /tools/lib/ld-2.18.so. Esto no es del todo necesario pero evita sorpresas a la altura que estamos que nos obligaría a revisar el trabajo hecho en apartados anteriores.

ln -s /tools/lib/ld-2.18.so /lib/ld-linux-so.2